home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_300 / 310_02 / process.st < prev    next >
Text File  |  1990-04-18  |  1KB  |  45 lines

  1. Class  Process
  2.  
  3. [  block
  4.     (self state == #TERMINATED)
  5.         ifTrue: [self termErr: 'block'.  ^ nil].
  6.     <SetProcessState  self 2>.
  7.     ^ self state
  8.  
  9. |  resume
  10.     (self state == #TERMINATED)
  11.         ifTrue: [self termErr: 'resume'.  ^ nil].
  12.     <SetProcessState  self 0>.
  13.     ^ self state
  14.  
  15. |  suspend
  16.     (self state == #TERMINATED)
  17.         ifTrue: [self termErr: 'suspend'.  ^ nil].
  18.     <SetProcessState  self 1>.
  19.     ^ self state
  20.  
  21. |  state  | pstate |
  22.     pstate <- <ReturnProcessState  self>.
  23.     (pstate = 0) ifTrue: [pstate <- #READY.  ^ pstate].
  24.     (pstate = 1) ifTrue: [pstate <- #SUSPENDED.  ^ pstate].
  25.     (pstate = 2) ifTrue: [pstate <- #BLOCKED.  ^ pstate].
  26.     (pstate = 3) ifTrue: [pstate <- #BLOCKED.  ^ pstate].
  27.     (pstate >= 4) ifTrue: [pstate <- #TERMINATED.  ^ pstate]
  28.  
  29. |  terminate
  30.     <Terminate self>.
  31.     ^ self state
  32.  
  33. |  termErr: msgName
  34.     ('Cannot ',msgName,' a terminated process.') print
  35.  
  36. |  unblock
  37.     (self state == #TERMINATED)
  38.         ifTrue: [self termErr: 'unblock'.  ^ nil].
  39.     <SetProcessState  self 3>.
  40.     ^ self state
  41.  
  42. |  yield
  43.     ^ nil
  44. ]
  45.